GeoPoint = function(lat, lng) {
    if (arguments.length == 1 && arguments[0]) {
        lat = arguments[0].lat;
        lng = arguments[0].lng;
    }
    if (!lat && lat != 0)
        throw 'Missing latitude';
    if (!lng && lng != 0)
        throw 'Missing longitude';
    this.lat = lat;
    this.lng = lng;
};

GeoPoint.prototype = {
    distance: function(p) {
        var q1 = new google.maps.LatLng(this.lat, this.lng);
        var q2 = new google.maps.LatLng(p.lat, p.lng);
        return google.maps.geometry.spherical.computeDistanceBetween(q1, q2);
    }
};
